package com.xique.park.bean.vo.web.payOrder;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xique.park.bean.domain.RefundOrder;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PayOrderVo {

    /**
     * 总收入
     */
    private double totalRevenue;
    /**
     * 总收入环比
     */
    private double totalRingThan;
    /**
     * 临时停车收入
     */
    private double temporaryRevenue;
    /**
     * 临时停车收入环比
     */
    private double temporaryRingThan;
    /**
     * 月卡缴费
     */
    private double monthlyCardRevenue;
    /**
     * 月卡缴费 环比
     */
    private double monthlyCardRingThan;
    /**
     * 商家充值缴费
     */
    private double businessRevenue;
    /**
     * 商家充值缴费环比
     */
    private double businessRingThan;
    /**
     * 车辆进场
     */
    private int inCarRevenue;
    /**
     * 车辆进场环比
     */
    private double inCarRingThan;
    /**
     * 车辆出场
     */
    private int outCarRevenue;
    /**
     * 车辆出场环比
     */
    private double outCarRingThan;

    /**
     * ID
     */
    private Long id;

    /**
     * 订单编号（不用id）：多个用，分开
     */
    private String orderIds;

    /**
     * 订单编号
     */
    private String orderNo;

    /**
     * 支付记录序列号
     */
    private String paySsn;

    /**
     * 车牌号
     */
    private String plate;

    /**
     * 交易类型：（1：月卡续费 2：余额充值 3：临时缴费）
     */
    private String transType;

    /**
     * 实际支付费用，单位：分
     */
    private BigDecimal actualFee;

    /**
     * 支付时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date payTime;

    /**
     * 支付方式（0-P云，1-现金，2-ETC，3-余额，4-支付宝，8-微信，9-免费，10-其他，20-数币）
     */
    private String payType;

    /**
     * 外部订单号（微信、支付宝等第三方平台订单号）
     */
    private String outTradeNo;

    /**
     * 支付状态
     * <p>
     * 1-待支付 2-已支付 3-正在支付中 4-已取消 5-无需支付 6-现金已支付 7-免费放行 20-全部退款 21-部分退款
     */
    private String status;

    /**
     * 停车流水，标识具体某次停车事件，需保证该停车场下唯一
     */
    private String parkingSerial;

    /**
     * 商圈优惠金额(分)
     */
    private BigDecimal shopCharge;

    /**
     * 待支付金额，单位：分
     */
    private BigDecimal amt;

    /**
     * 已支付费用
     */
    private BigDecimal paidFee;

    /**
     * 优惠减免费用
     */
    private BigDecimal reduceFee;

    /**
     * 总停车费用
     */
    private BigDecimal totalFee;

    /**
     * 免费金额
     */
    private BigDecimal freeFee;

    /**
     * 未收费金额
     */
    private BigDecimal noPayFee;

    /**
     * 实收现金
     */
    private BigDecimal cashFee;

    /**
     * 已结算金额
     */
    private BigDecimal cashSettlementFee;

    /**
     * 结算状态（0：未结算，1：已结算）
     */
    private Integer settlementStatus;

    /**
     * 备注
     */
    private String remark;

    private Long totalCount;

    private BigDecimal totalPrice;

    private Long updateUser;

    private String updateBy;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 缴费通道ID
     */
    private Long payLaneId;

    /**
     * 缴费通道名称
     */
    private String payLaneName;

    /**
     * 应结算金额（分）
     */
    private BigDecimal settlementAmount;

    /**
     * 退款金额（分）
     */
    private BigDecimal refundAmount;

    /**
     * 打款状态
     * <p>
     * 1:未结算
     * 2:结算成功
     * 3:结算异常
     */
    private Integer paymentStatus;

    /**
     * 打款金额（分）
     */
    private BigDecimal paymentAmount;

    /**
     * 手续费（分）
     */
    private BigDecimal serviceCharge;

    /**
     * 支付总金额（分）
     */
    private BigDecimal totalPayPrice;

    /**
     * 总手续费（分）
     */
    private BigDecimal totalServiceCharge;

    /**
     * 应结算总金额（分）
     */
    private BigDecimal totalSettlementAmount;

    /**
     * 退款订单ID
     */
    private Long refundOrderId;

    private List<RefundOrder> refundOrderList;
}


